package com.pojotest.pojotest.services;

import com.pojotest.pojotest.mapper.XboxMapper;
import com.pojotest.pojotest.pojo.XboxGame;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.List;

/**
 * 编写业务逻辑的这一层
 */
@Service
public class XboxService {

    public static void main(String[] args) {
        // 创建两个BigDecimal对象
        BigDecimal num1 = new BigDecimal("200");
        BigDecimal num2 = new BigDecimal("200");

        BigDecimal num3 = new BigDecimal("0.1");
        System.out.println(num3.toString());

        // 比较两个BigDecimal对象的大小
        int comparisonResult = num1.compareTo(num2);
        System.out.println(comparisonResult);
        // 根据比较结果输出信息
        if (comparisonResult > 0) {
            System.out.println(num1 + " 大于 " + num2);
        } else if (comparisonResult < 0) {
            System.out.println(num1 + " 小于 " + num2);
        } else {
            System.out.println(num1 + " 等于 " + num2);
        }
    }


    /**
     * 注入了mapper
     */
    @Autowired
    private XboxMapper xboxMapper;

    /**
     * 查询所有的游戏
     *
     * @return
     */
    public List<XboxGame> getList() {
        return xboxMapper.findAll();
    }

    public XboxGame findById(int id) {
        return xboxMapper.findById(id);
    }

    public boolean updateGame(String name, int id) {
        return xboxMapper.update(name, id);
    }

    public XboxGame findByPublishNo(String publish_no) {
        return xboxMapper.findByPublishNo(publish_no);
    }

    public boolean deleteById(int id) {
        return xboxMapper.deleteById(id);
    }

    /**
     * 获取游戏单价超过500的游戏列表
     * 这里的逻辑是从数据库中查询所有的游戏并且取前500条
     * 反面教材：我们只要500条，那么就直接查询500条不就行了吗
     * 查询全量的数据是不可取的，首先全量查询会很慢，并且查询到的大量数据会传递到web服务中
     * 会让带宽很快的上升，带宽一旦被打满，服务也就不可用了。
     *
     * @return List
     */
    public List<XboxGame> getHighPriceList() {
        // 查询所有的游戏，并且按照发布时间倒序
        List<XboxGame> xboxList = this.getList();
        List<XboxGame> resultList = new ArrayList<XboxGame>();
        for (int i = 0; i < xboxList.size(); i++) {// 遍历所有的游戏
            // 判断游戏的价格是否超过了500
            BigDecimal price = xboxList.get(i).getPrice();
            int compareResult = price.compareTo(new BigDecimal("500"));
            if (compareResult > 0) {
                resultList.add(xboxList.get(i));
            }
        }

        return resultList;
    }

    // 新增游戏记录
    public boolean add(XboxGame xboxgame) {
        boolean addResult = xboxMapper.add(xboxgame);
        return addResult;
    }
}
